﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

using HHo_Model;
using HHo_Negocio;
using System.IO;

public partial class Consultas_wc_trab : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GestorTblParametros oGesPar = new GestorTblParametros();
            ListItem li = new ListItem();
            li.Text = StringConstantes.DDL_BIND_PARAM_TEXT_TODOS;
            li.Value = StringConstantes.DDL_BIND_PARAM_VAL_TODOS;

            ddlPrg.DataSource = oGesPar.ListaParametroPorGrupo(7);
            ddlPrg.DataTextField = StringConstantes.DDL_BIND_PARAM_VAL_TEXT_FIELD;
            ddlPrg.DataValueField = StringConstantes.DDL_BIND_PARAM_VAL_VALUE_FIELD;
            ddlPrg.DataBind();
            ddlPrg.Items.Add(li);
            ddlPrg.SelectedValue = li.Value;

            ddlParticip.DataSource = oGesPar.ListaParametroPorGrupo(5);
            ddlParticip.DataTextField = StringConstantes.DDL_BIND_PARAM_VAL_TEXT_FIELD;
            ddlParticip.DataValueField = StringConstantes.DDL_BIND_PARAM_VAL_VALUE_FIELD;
            ddlParticip.DataBind();
            ddlParticip.Items.Add(li);
            ddlParticip.SelectedValue = li.Value;


            GestorOrigen oGestOrigen = new GestorOrigen();
            ddlOrigen.DataSource = oGestOrigen.ListarOrigen();
            ddlOrigen.DataTextField = "Codigo";
            ddlOrigen.DataValueField = "Id";
            ddlOrigen.DataBind();
            ddlOrigen.Items.Add(li);
            ddlOrigen.SelectedValue = li.Value;

            GestorTipoTrabajo oGesTipoTrabajo = new GestorTipoTrabajo();
            ddlTrabRealizado.DataSource = oGesTipoTrabajo.ConsultarTipoTrabajo(999, '1'); //'1', no considera el primer parametro
            ddlTrabRealizado.DataTextField = "Descripcion";
            ddlTrabRealizado.DataValueField = "Id";
            ddlTrabRealizado.DataBind();
            ddlTrabRealizado.Items.Add(li);
            ddlTrabRealizado.SelectedValue = li.Value;

            ddlArea.DataSource = oGesPar.ListaParametroPorGrupo(6);
            ddlArea.DataTextField = StringConstantes.DDL_BIND_PARAM_VAL_TEXT_FIELD;
            ddlArea.DataValueField = StringConstantes.DDL_BIND_PARAM_VAL_VALUE_FIELD;
            ddlArea.DataBind();
            ddlArea.Items.Add(li);
            ddlArea.SelectedValue = li.Value;

            ddlEstadoTrab.DataSource = oGesPar.ListaParametroPorGrupo(4);
            ddlEstadoTrab.DataTextField = StringConstantes.DDL_BIND_PARAM_VAL_TEXT_FIELD;
            ddlEstadoTrab.DataValueField = StringConstantes.DDL_BIND_PARAM_VAL_VALUE_FIELD;
            ddlEstadoTrab.DataBind();
            ddlEstadoTrab.Items.Add(li);
            ddlEstadoTrab.SelectedValue = li.Value;
        }
    }

    private List<E_ConsultaTrab> CargarData()
    {
        List<E_ConsultaTrab> lst = null;
        int IdOrigen, IdTipoTrabajo, IdTipoParticip, IdPrgNPrg, IdComponente,IdEstadoTrab,IdArea;
        string matAvion = "";
        string csvParticipante = "";
        string descTrabajo = "";
        IdOrigen = -99;
        IdTipoTrabajo = -99;
        IdTipoParticip = -99;
        IdPrgNPrg = -99;
        IdComponente = -99;
        IdEstadoTrab = -99;
        IdArea = -99;

        if (txtMatAvion.Text.Trim().Length > 0)
            matAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvion.Text);

        if (ddlOrigen.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdOrigen = Int32.Parse(ddlOrigen.SelectedValue);

        if (ddlTrabRealizado.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdTipoTrabajo = Int32.Parse(ddlTrabRealizado.SelectedValue);

        if (ddlParticip.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdTipoParticip = Int32.Parse(ddlParticip.SelectedValue);

        if (ddlPrg.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdPrgNPrg = Int32.Parse(ddlPrg.SelectedValue);

        if (hid_CodComponente.Value.Trim().Length > 0)
            IdComponente = Int32.Parse(hid_CodComponente.Value);

        if (ddlEstadoTrab.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdEstadoTrab = Int32.Parse(ddlEstadoTrab.SelectedValue);

        if (txtMec.Text.Trim().Length > 0)
            csvParticipante = txtMec.Text.Trim();

        if (txtDescTrab.Text.Trim().Length > 0)
            descTrabajo = txtDescTrab.Text.Trim();
                    
        if (ddlArea.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdArea = Int32.Parse(ddlArea.SelectedValue);

        GestorConsultas oGesCons = new GestorConsultas();
        try
        {

        lst =  oGesCons.ConsultaTrab(csvParticipante, txtFecIni.Text, txtFecFin.Text, matAvion,
            IdOrigen, IdTipoTrabajo, IdTipoParticip, IdComponente, descTrabajo, IdPrgNPrg, IdEstadoTrab, 
            txtNumDif.Text, IdArea);            
        }
        catch (Exception ex)
        {
            lblMensaje.Text = "ERROR DEL SISTEMA<br/>" + ex.Message;
        }
        return lst;
    }

    protected void imgConsultar_Click(object sender, ImageClickEventArgs e)
    {
        if ((txtFecIni.Text.Length == 10) && (txtFecFin.Text.Length == 10))
        {
            gvTrab.DataSource = CargarData();
            gvTrab.DataBind();
        }
    }
    protected void imgBuscaComp_Click(object sender, ImageClickEventArgs e)
    {
        txtTextoComponente.Text = "";
        GestorComponente oGestorComponente = new GestorComponente();
        string DatosComponente = oGestorComponente.ConsultarComponente(txtCodAta.Text, txtCodSubAta.Text, txtCodCompon.Text, "1");
        string[] vDatosComponente;
        if (DatosComponente != null)
        {
            vDatosComponente = DatosComponente.Split('|');
            hid_CodComponente.Value = vDatosComponente[0];
            txtTextoComponente.Text = vDatosComponente[4];
        }
        else
        {
            ClientScriptManager oClient = Page.ClientScript;
            oClient.RegisterStartupScript(this.GetType(), "Aviso", "alert('No existe datos para el componente ingresado, vuelva a ingresar los datos');", true);
        } 
    }
    protected void gvTrab_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvTrab.PageIndex = e.NewPageIndex;
        gvTrab.DataSource = CargarData();
        gvTrab.DataBind();
    }
    protected void imgToExcel_Click(object sender, ImageClickEventArgs e)
    {
        GridView gv;
        gv = gvTrab;
        gv.AllowPaging = false;

        gv.DataSource = null;
        gv.DataBind();

        gv.DataSource = CargarData();
        gv.DataBind();

        string atachado = "attachment; filename=ConsTRAB.xls";
        Response.ClearContent();
        Response.Clear();
        Response.AddHeader("content-disposition", atachado);

        //Response.ContentType = "application/vnd.ms-excel";
        Response.ContentType = "application/ms-excel";
        Response.Charset = "";
        this.EnableViewState = false;

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        HtmlForm frm = new HtmlForm();
        gv.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(gv);

        sw.Write(PrepareHTMLEtiqExcel());

        //sw.Write(PrepareHTMLEtiqExcel());
        //gvConsol.Parent.Controls.Add(frm);
        //frm.Controls.Add(gvConsol);

        frm.RenderControl(htw);
        //hidDataFiltro.RenderControl(htw);
        //gvResult.RenderControl(htw);        
        Response.Write(sw.ToString());
        Response.End();

    }

    private string PrepareHTMLEtiqExcel()
    {
        string strLabel;
        strLabel = "<table border='1'><tr><td colspan='6' style='font:bold 14pt/14pt verdana; color:Navy'>CONSULTA DE TRABAJOS</td></tr><tr>";
        strLabel += "<td>Mecanico</td>" + txtMec.Text + "</td><td>Fecha de Inicio</td><td>";
        strLabel += txtFecIni.Text;
        strLabel += "</td><td>Fecha de Fin</td><td>";
        strLabel += txtFecFin.Text;
        strLabel += "</td></tr><tr><td>Avion</td><td>";
        strLabel += txtMatAvion.Text;
        strLabel += "</td><td>Origen</td><td>";
        strLabel += ddlOrigen.Items[ddlOrigen.SelectedIndex].Text;
        strLabel += "</td></tr><tr><td>Trabajo Realizado:</td><td>";
        strLabel += ddlTrabRealizado.Items[ddlTrabRealizado.SelectedIndex].Text;
        strLabel += "</td><td>Descripción del Trabajo:</td>";
        strLabel += txtDescTrab.Text;
        strLabel += "</td></tr><tr><td>Código ATA:</td><td>";
        strLabel += txtCodAta.Text + "-" + txtCodSubAta.Text;
        strLabel += "</td><td>Componente</td><td>";
        strLabel += txtTextoComponente.Text;
        strLabel += "</td></tr><tr><td>Estado del Trabajo:</td><td>";
        strLabel += ddlEstadoTrab.Items[ddlEstadoTrab.SelectedIndex].Text;
        strLabel += "</td><td>Num. Diferido:</td><td>";
        strLabel += txtNumDif.Text;
        strLabel += "</td><td>Participacion</td><td>";
        strLabel += ddlParticip.Items[ddlParticip.SelectedIndex].Text;
        strLabel += "</td><td>Area</td><td>";
        strLabel += ddlArea.Items[ddlArea.SelectedIndex].Text;
        strLabel += "</td><td>Prg</td><td>";
        strLabel += ddlPrg.Items[ddlPrg.SelectedIndex].Text;
        strLabel += "</td></tr></table>";
        return strLabel;
    }


    protected void ddlOrigen_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<E_Origen> lstOrigen;
        E_Origen[] oOrigen;
        GestorOrigen oGestOrigen = new GestorOrigen();
        lstOrigen = oGestOrigen.ListarOrigen(Int32.Parse(ddlOrigen.SelectedValue));
        oOrigen = lstOrigen.ToArray();

        divATASATA.Style.Remove("display");
        divATASATA.Style.Add("display", "none");
        divTipTra.Style.Remove("display");
        divTipTra.Style.Add("display", "none");

        /* LIMPIAR LOS DATOS DE LOS CONTROLES */
        txtCodAta.Text = "";
        txtCodSubAta.Text = "";
        hid_CodComponente.Value = "";
        txtTextoComponente.Text = "";
        txtDescTrab.Text = "";

        // Si el Origen contempla poblar Tipo de Trabajo
        if (oOrigen.Length > 0)
        {
            if (oOrigen[0].EsObligatorioComponente == "1")
            {
                txtCodAta.Enabled = true;
                txtCodSubAta.Enabled = true;
                txtCodCompon.Enabled = true;
                ddlTrabRealizado.Enabled = false;
                txtDescTrab.Enabled = false;

                ddlTrabRealizado.SelectedValue = StringConstantes.DDL_BIND_PARAM_VAL_TODOS;
                divATASATA.Style.Remove("display");
                divATASATA.Style.Add("display", "block");
            }
            else
            {
                txtCodAta.Enabled = false;
                txtCodSubAta.Enabled = false;
                txtCodCompon.Enabled = false;
                txtDescTrab.Enabled = true;
                ddlTrabRealizado.Enabled = true;
                divTipTra.Style.Remove("display");
                divTipTra.Style.Add("display", "block");
            }
        }
        else
        {
            ddlTrabRealizado.SelectedValue = StringConstantes.DDL_BIND_PARAM_VAL_TODOS;
        }
    }
}
